#if !defined(__APP_BT_H)
#define __APP_BT_H

#include "app_device.h"

// 波特率
typedef enum
{
    BT_BR_9600 = '4',
    BT_BR_115200 = '8',
}BT_BR_t;

/**
 * @brief 判断蓝牙是否连接成功
 * 
 * @param device 设备信息
 * @return int 0:成功 -1:失败
 */
int app_bt_is_connected(Device_t *device);

/**
 * @brief 重启蓝牙模块
 * 
 * @param device 设备信息
 * @return int 0:成功 -1:失败
 */
int app_bt_reset(Device_t *device);

/**
 * @brief 设置蓝牙名称
 * 
 * @param device 设备信息
 * @param name 蓝牙名称
 * @return int 0:成功 -1:失败
 */
int app_bt_set_name(Device_t *device, char *name);

/**
 * @brief 设置波特率
 * 
 * @param device 设备信息
 * @param baudrate 波特率
 * @return int 0:成功 -1:失败
 */
int app_bt_set_baudrate(Device_t *device, BT_BR_t baudrate);

/**
 * @brief 设置组网ID
 * 
 * @param device 设备信息
 * @param netid 组网ID
 * @return int 0:成功 -1:失败
 */
int app_bt_set_netid(Device_t *device, char *netid);

/**
 * @brief 设置MAC地址
 * 
 * @param device 设备信息
 * @param mac MAC地址
 * @return int 0:成功 -1:失败
 */
int app_bt_set_mac(Device_t *device, char *mac);

/**
 * @brief 初始化蓝牙模块
 * 注册读后和写前回调函数
 * @param device 设备信息
 * @return int 0:成功 -1:失败
 */
int app_bt_init(Device_t *device);

/**
 * @brief 读后回调函数
 *
 * @param data 数据
 * @param len  容量
 * @return int 实际读取的字节数
 */
int post_read_bt(char *data, int len);

/**
 * @brief 写前回调函数
 *
 * @param data MQTT数据
 * @param len 实际写入的MQTT字节数
 * @param size 容量
 * @return int 实际写入的蓝牙字节数
 */
int pre_write_bt(char *data, int len, int size);

#endif // __APP_BT_H